/* gcc sock_c.c -l wsock32 -o server.exe */
#include <winsock2.h>
#include <stdio.h>
#include <string.h>
int main(){
	WORD wVersionRequested = MAKEWORD( 2, 2 );
	WSADATA wsaData;
	int err  = WSAStartup( wVersionRequested, &wsaData );
	if( err != 0 ){
		return -1;
	}
	
	if( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ){
		WSACleanup( );
		return -1;
	}
	SOCKET sockSrv=socket(AF_INET, SOCK_STREAM, 0);
	
	SOCKADDR_IN addrSrv;
	addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
	addrSrv.sin_family = AF_INET;
	addrSrv.sin_port = htons(6000);

	bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));

	listen(sockSrv, 5);

	SOCKADDR_IN addrClient;
	int len;
	len = sizeof(SOCKADDR);
	while(1){
		SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);
		char sendBuf[100];
		char temp[100];
		printf("input your message:");
		scanf("%s", temp);
		sprintf(sendBuf, temp, inet_ntoa(addrClient.sin_addr));
		send(sockConn, sendBuf, strlen(sendBuf)+1, 0);
		char recvBuf[100];
		recv(sockConn, recvBuf, 100, 0);
		printf("%s\n", recvBuf);
		closesocket(sockConn);
	}
	return 0;
}
